﻿using System.Linq;
using VO;
using System.Collections.Generic;

namespace DAL
{
    public class BlacklistDAL
    {

        #region Insert
        public void Insert(Blacklist obj)
        {
            using (var contexto = new CallcenterEntities())
            {
                var objC = new tbCCBlackList();
                objC = PopulaObjeto(obj, objC);
                contexto.AddTotbCCBlackList(objC);
                contexto.SaveChanges();
            }
        }
        #endregion

        #region Delete
        public void Delete(int idBlackList)
        {
            using (var contexto = new CallcenterEntities())
            {
                var list = (from tb in contexto.tbCCBlackList
                                where tb.idBlackList == idBlackList
                                select tb).FirstOrDefault();
                contexto.DeleteObject(list);
                contexto.SaveChanges();
            }
        }
        #endregion

        #region Select
        public IList<Blacklist> Select()
        {
            using (var contexto = new CallcenterEntities())
            {
                var listBlack = (from blackAux in contexto.tbCCBlackList
                                 join clienteAux in contexto.CCCliente_Callcenter on blackAux.idCliente equals clienteAux.idCliente
                            join campAux in contexto.tbCCCampanha on blackAux.idCampanha equals campAux.idCampanha
                            select new { blackAux.idBlackList, blackAux.idCampanha, campAux.nomeCampanha, blackAux.idCliente, clienteAux.Nome, clienteAux.CPF });

                //Carrega lista
                var list = new List<Blacklist>();
                foreach (var obj in listBlack)
                {
                    var newObj = new Blacklist();
                    newObj.idCampanha = obj.idCampanha;
                    newObj.nomeCampanha = obj.nomeCampanha;
                    newObj.idCliente = obj.idCliente;
                    newObj.nomeCliente = obj.Nome;
                    newObj.cpf = obj.CPF;
                    newObj.idBlackList = obj.idBlackList;
                    list.Add(newObj);
                }

                return list;
            }
        }
        #endregion

        #region PopulaObjeto
        protected static tbCCBlackList PopulaObjeto(Blacklist obj, tbCCBlackList tabela)
        {
            tabela.idBlackList = obj.idBlackList;
            tabela.idCampanha = obj.idCampanha;
            tabela.idCliente = obj.idCliente;
            tabela.idAtendente = obj.idAtendente;
            tabela.dtCadastro = obj.dtCadastro;
            tabela.cpf = obj.cpf;
            return tabela;
        }

        //protected static IList<Campanha> PopulaObjeto(IQueryable<tbCCCampanha> reader)
        //{
        //    IList<Campanha> list = new List<Campanha>();
        //    foreach (var obj in reader)
        //    {
        //        var newObj = new Campanha();
        //        newObj.idCampanha = obj.idCampanha;
        //        newObj.nomeCampanha = obj.nomeCampanha;
        //        newObj.descricao = obj.descricao;
        //        newObj.alias = obj.alias;
        //        newObj.Convenio = obj.Convenio;
        //        newObj.dtCadastro = obj.dtCadastro;
        //        newObj.dtFinalizacao = obj.dtFinalizacao;
        //        newObj.fgAtivo = obj.fgAtivo;
        //        list.Add(newObj);
        //    }
        //    return list;
        //}
        #endregion

    }
}